package com.bbc.commonbackstage.common.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * html标签过滤工具类
 *
 * @author wl
 * @date 2022/12/8 17:58
 */
public class HtmlUtils {

    /**
     * 过滤HTML标签输出文本
     *
     * @param text 原字符串
     * @return 过滤后字符串
     */
    public static String htmlToText(String text) {
        // 非空校验
        if (StringUtils.isBlank(text)) {
            return "";
        }
        // 定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script>
        String regex = "(<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>)" +
                // 定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style>
                "|(<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>)" +
                // 定义HTML标签的正则表达式
                "|(<[^>]+>)" +
                // 定义空格回车换行符
                "|(\\s*|\t|\r|\n)" +
                // 定义转义字符
                "|(&.{2,6}?;)" +
                // 定义非换行空格和全角空格
                "|&nbsp;|&emsp;";
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(text);

        // 返回替换的字符串
        return matcher.replaceAll("");
    }
}
